package com.example.understand_compose1.testcase_activity

import android.os.Bundle
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.understand_compose1.R
import com.example.understand_compose1.testcase_activity.subfragment.FetHomeFragWithBottomNav
import com.google.android.material.bottomnavigation.BottomNavigationView


// TODO: 实现底部导航栏功能
class FetBottomNavigateActivity : AppCompatActivity() {
    // TODO: 设置home fragment
    private val homeFragment = FetHomeFragWithBottomNav()


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_fet_bottom_navigate)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }


        // 1. 找到导航组件
        val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation)
        // TODO: 以下两步不要做，因为导航组件里面已经包含了menu了
//        val navMenuInflater = bottomNavigationView.menuInflater
        // 2. 绑定menu到导航组件
//        navMenuInflater.inflate(R.menu.bottom_nav_menu, bottomNavigationView.menu)

        // Handling navigation view item clicks
        // TODO:点击事件
        bottomNavigationView.setOnNavigationItemSelectedListener { item ->
            when (item.itemId) {
                R.id.navigation_home -> {
                    // TODO: 提交一个fragment事务
                    supportFragmentManager.beginTransaction().replace(R.id.fragment_container, homeFragment)
                        .commit()
                    // Handle the home action
                    Toast.makeText(this, "点击了home", Toast.LENGTH_SHORT).show()
                    return@setOnNavigationItemSelectedListener true
                }

                R.id.navigation_dashboard -> {
                    // Handle the dashboard action
                    Toast.makeText(this, "点击了dashboard", Toast.LENGTH_SHORT).show()
                    return@setOnNavigationItemSelectedListener true
                }

                R.id.navigation_notifications -> {
                    // Handle the notifications action
                    Toast.makeText(this, "点击了notification", Toast.LENGTH_SHORT).show()
                    return@setOnNavigationItemSelectedListener true
                }
            }
            false
        }
    }
}

/*
根据您提供的错误信息“Cannot access 'menuInflater': it is invisible (private in a supertype) in 'BottomNavigationView'”，这是因为`BottomNavigationView`并没有提供`menuInflater`这个属性，所以您不能直接通过`BottomNavigationView`来获取`MenuInflater`。在Android中，`MenuInflater`通常是用来与`Menu`对象一起使用的，而不是直接与`BottomNavigationView`一起使用。

如果您想要为`BottomNavigationView`设置菜单项，您应该直接使用`inflate`方法来从资源文件中填充菜单，而不是使用`MenuInflater`。以下是正确的做法：

1. **在XML布局文件中指定菜单资源**：

   在`BottomNavigationView`的XML布局中，使用`app:menu`属性来指定菜单资源文件：
   ```xml
   <com.google.android.material.bottomnavigation.BottomNavigationView
       android:id="@+id/bottom_navigation"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:menu="@menu/bottom_nav_menu" />
   ```

2. **在Activity中设置NavigationItemSelectedListener**：

   在您的`Activity`中，直接通过`BottomNavigationView`获取菜单，并设置`OnNavigationItemSelectedListener`：
   ```kotlin
   val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation)
   bottomNavigationView.setOnNavigationItemSelectedListener { item ->
       when (item.itemId) {
           R.id.action_home -> {
               // Handle the home action
               true
           }
           R.id.action_dashboard -> {
               // Handle the dashboard action
               true
           }
           // ... other cases
       }
   }
   ```

这种方式不需要使用`menuInflater`，因为`BottomNavigationView`会自动处理菜单的填充。您只需要指定菜单资源文件，并通过`setOnNavigationItemSelectedListener`来处理用户的点击事件即可。

如果您仍然遇到问题，请确保您的`bottom_nav_menu.xml`文件位于正确的`res/menu`目录下，并且其中的`item`元素定义了正确的`id`和`icon`属性。希望这能帮助您解决问题。

 */

/*
在Android开发中，如果你遇到了“Cannot access 'menuInflater': it is invisible (private in a supertype) in 'BottomNavigationView'”这样的错误，这通常意味着你正在尝试访问`BottomNavigationView`中的一个私有成员`menuInflater`，这是不被允许的。根据搜索结果，这个问题并不是直接关于`menuInflater`的访问问题，而是关于`BottomNavigationView`的使用和一些常见的问题处理。

对于你提到的`menuInflater`问题，这可能是因为你错误地尝试在`BottomNavigationView`中直接访问或操作`MenuInflater`。`MenuInflater`通常用于从XML菜单资源文件中充气菜单，但它不是`BottomNavigationView`的直接成员。你应该在你的`Activity`或`Fragment`中获取`MenuInflater`实例，并使用它来充气菜单，然后将菜单设置给`BottomNavigationView`。

以下是正确设置`BottomNavigationView`菜单的步骤：

1. **在你的Activity或Fragment中获取MenuInflater实例：**
   ```java
   MenuInflater menuInflater = getMenuInflater();
   ```

2. **充气菜单：**
   ```java
   Menu menu = menuInflater.inflate(R.menu.your_menu, bottomNavigationView.getMenu());
   ```

3. **设置BottomNavigationView的菜单：**
   ```java
   bottomNavigationView.setupWithNavController(navController);
   ```

   或者如果你不使用`NavController`，可以直接设置菜单：
   ```java
   bottomNavigationView.setMenu(menu);
   ```

如果你的问题是关于如何正确使用`BottomNavigationView`，那么请确保你遵循了正确的初始化和设置步骤。如果你的问题是关于特定的错误或行为，那么可能需要更详细的代码上下文来提供具体的解决方案。希望这些信息能帮助你解决问题。如果需要更具体的帮助，请提供更多的代码示例。

 */